A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to methodologies for consolidating resources in processing environments, such as a networked environment operating SQL database servers.
Computers are very powerful tools for storing and providing access to vast amounts of information. For instance, computer database servers are a common mechanism for storing information on computer systems while providing easy access to users. To support multiple clients concurrently accessing the system, the system must employ some sort of mechanism for managing its resourcesxe2x80x94that is, the devices, software, services, and subsystems which comprise the system. One approach is to provide resource management groups which are hierarchically formed. For instance, each resource management group may include a resource management process for managing resources allocated to its group, at least one process which is a descendant of the resource management process and not included in other resource management groups, and a resource management block for storing information on the resources managed by its own group. The resource management processes can be linked to each other in accordance with parent-child relationships between the respective resource management groups to form a resource management tree.
Each day more and more businesses are run from mission-critical systems which store information on resource-intensive systems, such as server-based SQL database systems. As a result, increasingly higher demands are being placed on those systems to provide enterprise-wide decision support. Accordingly, there is much interest in improving the performance of such system, particularly in terms of resource management. Accordingly, there is much interest in improving methodologies for managing and consolidating resources.
The present invention comprises a resource methodology which provides a framework for defining specific resource classes support for resource methods, and provides support for resource-independent commands, including those used in resource consolidation.
A Resource Consolidation methodology of the present invention works by starting with an empty resource set, then iteratively extends the set in a minimal fashion. At the end of the iteration, the initial resource set comprises sufficient resources. An important component to this approach is a Minimal Extension method. This method provides a directed, acyclic graph methodology that takes two graphs as input and extends one (the xe2x80x9cprimaryxe2x80x9d) so as to include the other one (the xe2x80x9csecondaryxe2x80x9d). For efficiency, resources in the secondary graph are shared with those in the primary graph wherever possible.
The intent of the method is to add the contents of the secondary graph to the primary graph, sharing nodes wherever the graphs are compatible, while retaining the topology of the secondary graph, and doing so in a minimal amount of time. The Minimal Extension methodology is itself composed of submethods or sub-algorithms. The method iterates through each node in the secondary graph, and extends the primary if necessary to contain the node, using an Extend method. Extend first checks if the given node is compatible with a node in the primary. If not, it adds the node to the primary. These two steps (i.e., checking compatibility, and adding to the primary) would be easy if they did not have edges coming out of them, but since they may have edges, both of these methods are made more complicated.
A compatibility check, called Unify, checks not only the node itself but any descendants of the node. Unify compares the node against each node in the primary, invoking a Compare function. Compare first checks that the nodes are directly compatible (ignoring any descendants), then recursively invokes Compare to check whether the descendants are compatible between the two graphs. When Unify finds a compatible subgraph (a subgraph is a node plus its descendants), it returns. A graph addition algorithm, Add, is invoked if the node is not found to be compatible. It copies the node from the secondary graph to the primary graph, then minimally extends the primary graph to include the node""s descendants, and finally adds the edges from the current node to the resulting nodes in the subgraph. Note that due to the minimal extension of the descend ants, Add is also recursive.